모의해킹
호스트기반모의해킹_27_웹 취약점 공격(파일 업로드)
작성자 : Heehyeon Yoo|2025-12-07
# 모의해킹# File Upload# Web Shell# WSO# Magic Bytes
1. 파일 업로드 우회 공격(Bypass Techniques)
단순한 파일 확장자 검사나 MIME Type 검사를 우회하여 악성 파일을 업로드하고 실행한다.
1.1 Content-Type 우회
- 공격 패킷(Burp Suite)의
Content-Type헤더를 조작한다. application/x-php->image/png또는image/jpeg로 변경하여 이미지 파일인 것처럼 속인다.
1.2 Magic Bytes(매직 바이트) 조작
- 서버가 파일의 헤더(Magic Byte)를 검사하여 실제 파일 타입을 식별하는 경우 사용.
- PNG 헤더 추가:
GIF89a나 PNG 매직 바이트(89 50 4E 47 ...)를 PHP 파일 최상단에 추가한다.# PNG 헤더(cat.png)와 웹쉘(wso.php) 합치기 head -c 8 cat.png > magic_header cat magic_header wso.php > wso-magic.php
1.3 LFI 연계 공격(Combo Attack)
매직 바이트와 확장자를 모두 속여서 업로드에 성공했더라도, 서버가 이를 .png 로 인식하여 PHP 코드를 실행하지 않을 수 있다(그저 이미지 렌더링 시도).
- 이때 LFI 취약점이 같이 존재한다면, 업로드된 이미지를 강제로 PHP로 해석(Execute)하게 만들 수 있다.
.../lfi.php?file=uploads/wso-magic.png-> 이미지 안의 PHP 코드가 실행됨.
2. 웹 쉘(WSO) vs 리버스 쉘
2.1 WSO(Web Shell by Orb)
- GUI 기반의 강력한 웹 쉘. 파일 탐색기, SQL 클라이언트, 프로세스 관리 등 제공.
- Password Protection: 공개된 웹 쉘은 누구나 접근 가능하므로 비밀번호 설정이 필수다.(MD5 해시 등으로 코드 수정 필요).
- 단점: PHP 코드가 복잡하여, LFI를 통해 이미지 파일로 실행하거나 매직 바이트를 섞었을 때 기능이 깨질 확률이 높다.
2.2 실무 권장 사항
- 복잡한 웹 쉘보다는 가볍고 확실한 리버스 쉘(Reverse Shell)을 선호한다.
- 파일 업로드 우회로 인해 코드가 변조되거나 깨질 위험이 적고, 연결만 되면 확실한 제어권을 얻기 때문.